var scrollBatter = function () {
  var data = {
    posY: 0,
    maxscroll: 0
  };
  return function (selectorScrollabl) {
    // 如果没有滚动容器选择器，或者已经绑定了滚动时间，忽略
    var container = document.getElementsByClassName('bodyStyle')[0];
    if (container.data111 === 'isBindScroll') {
      data = {
        posY: 0,
        maxscroll: 0
      };
      return;
    }
    // 是否是搓浏览器
    // 自己在这里添加判断和筛选
    var isSBBrowser;
    container.addEventListener('touchend', touchendListener, false);

    function touchendListener () {
      data.maxscroll = 0;
    }
    // 事件处理
    container.addEventListener('touchstart', touchstartListener, false);

    function touchstartListener (event) {
      var events = event.touches[0] || event;
      // alert(1);
      // 先求得是不是滚动元素或者滚动元素的子元素
      // console.log(events);
      var elTarget = event.target;
      if (!elTarget) {
        return;
      }

      var elScroll;
      elScroll = findPrents(elTarget);

      if (elTarget === window.document.body || elTarget === window.document.getElementsByClassName('bodyStyle')[0] || elTarget === window.document.getElementsByClassName('content')[0]) elScroll = null;

      if (!elScroll) {
        return;
      }
      // alert(1);
      // 当前滚动元素标记
      data.elScroll = elScroll;

      // 垂直位置标记
      data.posY = events.pageY;
      data.scrollY = elScroll.scrollTop;
      // 是否可以滚动
      data.maxscroll = elScroll.scrollHeight - elScroll.clientHeight;
    }
    container.addEventListener('touchmove', touchmoveListener, false);

    function touchmoveListener (params) {
      // alert(21);
      if (!data.elScroll) return;
      if (data.maxscroll <= 0 || isSBBrowser) {
        // 禁止滚动
        event.preventDefault();
      }
      // 滚动元素
      var elScroll = data.elScroll;
      // 当前的滚动高度
      var scrollTop = elScroll.scrollTop;

      // 现在移动的垂直位置，用来判断是往上移动还是往下
      var events = event.touches[0] || event;
      // 移动距离
      var distanceY = events.pageY - data.posY;

      if (isSBBrowser) {
        elScroll.scrollTop = data.scrollY - distanceY;
        // elScroll.trigger('scroll');
        return;
      }

      // 上下边缘检测
      if (distanceY > 0 && scrollTop === 0) {
        // 往上滑，并且到头
        // 禁止滚动的默认行为
        event.preventDefault();
        return;
      }

      // 下边缘检测
      if (distanceY < 0 && (scrollTop + 1 >= data.maxscroll)) {
        // 往下滑，并且到头
        // 禁止滚动的默认行为
        event.preventDefault();
        return undefined;
      }
    }
    // 防止多次重复绑定
    container.data111 = 'isBindScroll';
  };
};

function findPrents (el) {
  var parent = el.parentNode;
  if (!parent || !parent.classList) return false;
  var contentbody = false;
  // if (!parent.classList)
  parent.classList.forEach(name => {
    if (name === 'content-body') {
      contentbody = true;
    }
  });
  if (contentbody) {
    return parent;
  } else {
    return findPrents(parent);
  }
}
export default {
  'scrollBatter': scrollBatter
};
